#ifndef Conta_H
#define Conta_H
/*----------------------------------*/
#include "Basicos.h"/*Inclui <string>,<iostream>,<stdexcept>*/
#include "Email.h"/*Inclui <vector>*/
#include "Data.h"/*Inclui <cstdlib>*/
#include "Idade.h"/*Inclui <cstdlib>*/
#include "Nome.h"
#include "Senha.h"
#include "Mensagem.h"
#include "Clearance.h"
#include <vector>
#include <map>
/*----------------------------------*/
using namespace std;
/*----------------------------------*/
//! Classe que contem as informacoes necessarias para se criar uma Conta.
class Conta
{
private:
    //! @param nome objeto da classe Nome
    Nome nome;
    //! @param data objeto da classe Data
    Data data;
    //! @param email objeto da classe Email
    Email email;
    //! @param senha objeto da classe Senha
    Senha senha;
    //! @param idade objeto da classe Idade
    Idade idade;
    //! @param level objeto da classe Clearance
    Clearance level;
public:
    //! @details Construtor sem parametros
    Conta(){};
    //! @details Construtor que recebe os objetos basicos para se construir uma conta
    Conta(Nome,Idade,Data,Email,Senha,Clearance);
    //! @details Metodo que retorna o atributo nome
    //! @return Retorno objeto da classe Nome
    Nome getNome()const;
    //! @details Atribuidor do Nome
    void setNome(const Nome&);
    //! @details Metodo que retorna o atributo data
    //! @return Retorno objeto da classe Data
    Data getData()const;
    //! @details Atribuidor da Data
    void setData(const Data&);
    //! @details Metodo que retorna o atributo email
    //! @return Retorno objeto da classe Email
    Email getEmail()const;
    //! @details Atribuidor do Email
    void setEmail(const Email&);
    //! @details Metodo que retorna o atributo senha
    //! @return Retorno objeto da classe Senha
    Senha getSenha()const;
    //! @details Atribuidor da Senha
    void setSenha(const Senha&);
    //! @details Metodo que retorna o atributo idade
    //! @return Retorno objeto da classe Idade
    Idade getIdade()const;
    //! @details Atribuidor da Idade
    void setIdade(const Idade&);
    //! @details Metodo que retorna o atributo level
    //! @return Retorno objeto da classe Clearance
    Clearance getClearance()const;
    //! @details Atribuidor da Clearance
    void setClearance(const Clearance&);
};


inline Nome Conta::getNome() const
{
    return nome;
}

inline Data Conta::getData() const
{
    return data;
}

inline Senha Conta::getSenha() const
{
    return senha;
}

inline Email Conta::getEmail() const
{
    return email;
}

inline Idade Conta::getIdade() const
{
    return idade;
}

inline Clearance Conta::getClearance() const
{
    return level;
}
#endif
